Relm4 icons - Icons for your Relm4 and gtk-rs applications!
More than 2500 icons, ready for use in your app!
Usage
1. Find your icons 🔍
Use one of the following methods:
For icons from the GNOME icon-development-kit:
- Install Icon library
- Browse the GNOME icon resource
For icons from Fluent UI System Icons:
- Browse the fluent icon library catalog
For browsing all icons:
- Use the icon previews provided by in this repo: 16x16, 32x32 and 64x64
- Search the Rust documentation which also includes icon previews
2. Get relm4-icons ✍
For each icon you want to use, you can add a feature flag. Only the icons you specify will be compiled into your application.
= { = "0.6.0-beta.6", = ["<icon1>", "<icon2>", "<icon3>..."] }
Example
To enable the plus
and minus
icons use:
= { = "0.6.0-beta.6", = ["plus", "minus"] }
The file ending
-symbolic.svg
isn't part of the icon name.
3. Load the icons 🛫
Add this somewhere in your initialization code (after initializing RelmApp
or GTK).
;
initialize_icons
4. Use the icons 🎉
Use set_icon_name
and similar methods to use your icons, for example with
ButtonExt
,
StackPage
,
MenuButton
or
Image
.
Example
let button = default;
button.set_icon_name;
You can also use the icon_name
module for extra compile-time checking of icon names.
use icon_name;
let button = default;
button.set_icon_name;
How it works
Codegen
- Find all icons in the
icons
folder - Generate a feature flag and a conditional constant for each icon
Crate
- Include only the selected icons in a gresource file
- Include the gresource file in the compiled binary
- On initialization, add the gresource file to the default icon theme
Add new icons
To add new icons, move them into the icons
folder and make sure their file name ends with -symbolic.svg
.
Then run the following commands:
Credit
- GNOME contributors for providing so many outstanding icons
- gvdb-rs for providing a great crate for interacting with gresources in pure Rust
- gtk-rs for outstanding Rust bindings for GTK4
Legal
The source code of Relm4 icons is licensed under the terms of both the MIT license and the Apache License (Version 2.0).
Icons
- The icons in the
icons/icon-development-kit
folder are licensed under the terms of the CC0 license and therefore public domain. - The icons in the
icons/fluentui-system-icons
folder are licensed under the terms of the MIT license.
Both licenses should work for both open source and proprietary applications (without warranty).